package com.cloud.force.api.service;

import java.util.List;

import com.cloud.force.api.bean.MenuTabAuthority;
import com.cloud.force.api.bean.Part;
import com.cloud.force.api.bean.TabMenuHeader;
import com.cloud.force.api.entity.TaskListMenu;
import com.cloud.force.api.entity.TaskListMenuGroup;
import com.cloud.force.common.result.QkTreeNode;

public interface TaskListMenuService {
	/**
	 * 获取菜單列表
	 * 
	 * @return
	 */
	List<QkTreeNode> listTree();

	/**
	 * 查找全部菜单
	 * 
	 * @param bizId
	 * @return
	 */
	List<TabMenuHeader> listTaskListMenuHeader();

	/**
	 * 保存环节下Tab的权限
	 * 
	 * @param parts
	 * @param actDefId
	 */
	void saveUpdatePartAuth(List<MenuTabAuthority> parts, long actDefId, long taskListId);

	/**
	 * 获取指定环节下的参与者权限
	 * 
	 * @param actDefId
	 * @param parts
	 * @return
	 */
	List<Part> listPartAuthority(long taskListId, long actDefId, List<Part> parts);

	/**
	 * 通过箱子和参与者获取流程
	 * @param taskListId
	 * @param actDefId
	 * @param parts
	 * @return
	 */
	List<TaskListMenu> listTaskListMenuByPart(long taskListId, long actDefId, List<Long> parts);
	
	/**
	 * 保存/更新菜单分组
	 * @param group
	 */
	long saveUpdateGroup(TaskListMenuGroup group);

	/**
	 * 删除分组
	 * @param groupId
	 */
	void deleteGroup(long groupId);
	
	/**
	 * 保存或修改操作項
	 * @param menu
	 * @return
	 */
	TaskListMenu saveUpdateTaskListMenu(TaskListMenu menu);
	
	/**
	 * 删除菜单
	 * @param menuId
	 * @return
	 */
	long deleteMenu(long menuId);

	/**
	 * 加载菜单项
	 * @param menuId
	 * @return
	 */
	TaskListMenu loadMenu(long menuId);

}
